www.gusucode.com > VC Socket编程实例(服务器端+客户端)-源码程序 > VC Socket编程实例(服务器端+客户端)/Socket编程/TCP/TCPsrv/TCPsrv.cpp

    // TCPsrv.cpp : Defines the entry point for the console application.
//
/******************************************************************************
**File:			SOCKSrv.cpp
**Created:		July 30th 2009
**Author:		FreeKing
**Description:		关于socket编程基于TCP/IP协议的服务器端
*******************************************************************************/
#include "stdafx.h"
#include <Winsock2.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
	//加载套接字库
	WORD wVersionRequested;//WinSock库的版本号
	WSADATA wsaData;
	int err;
	
	wVersionRequested = MAKEWORD( 1, 1);
	err = WSAStartup(wVersionRequested, &wsaData);
	if( err != 0)
	{
		return 1 ;
	}
	
	if( LOBYTE( wsaData.wVersion) != 1 || HIBYTE( wsaData.wVersion) !=1 )
	{
		WSACleanup();
		return -2;
	}
	//创建用于监听的套接字
	SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);
	
	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(6000);
	
	//绑定套接字
	bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
	//将套接字设为监听模式,准备接受客户请求
	listen(sockSrv, 5);//5为等待连续队列的最大值
	
	SOCKADDR_IN addrClient;
	int len = sizeof(SOCKADDR);
	
	while(1)
	{
		//等待客户请求到来
		SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);//sockConn建立连接的套接字
		char sendBuf[100];
		sprintf( sendBuf, "Welcome %s to the FreeKing World", inet_ntoa(addrClient.sin_addr));
		
		//发送数据
		send( sockConn, sendBuf, strlen(sendBuf)+1, 0 );
		char recvBuf[100];
		//接受数据
		recv( sockConn, recvBuf, 100, 0 );
		//打印接受的数据
		printf( "%s\n", recvBuf);
		//关闭套接字
		closesocket(sockConn);
	}
	
	//程序需要连接ws2_32.lib文件 project--link---Object/libary modules添加ws2_32.lib
	return 0;
}